package com.feng.gaoerfu.utils;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;

import com.feng.gaoerfu.base.App;


/**
 * 创建者     zeyu.jia
 * 创建时间   2016/3/24 15:06
 * 描述	      ${TODO}$
 * <p/>
 * 更新者     $Author: admin $
 * 更新时间   $Date: 2016-03-28 14:32:07 +0800 (星期一, 28 三月 2016) $
 * 更新描述   ${TODO}$
 */
public class UIUtils {
    /**
     * 得到上下文
     */
    public static Context getContext() {
        return App.mContext;
    }

    /**
     * 得到Resource对象
     */
    public static Resources getResources() {
        return getContext().getResources();
    }

    /**
     * 得到string.xml中的字符
     */
    public static String getString(int resId) {
        return getResources().getString(resId);
    }

    /**
     * 得到string.xml中的字符数组
     */
    public static String[] getStringArr(int resId) {
        return getResources().getStringArray(resId);
    }

    /**
     * 得到color.xml中的颜色信息
     */
    public static int getColor(int resId) {
        return getResources().getColor(resId);
    }

    /**
     * 得到包名
     *
     * @return
     */
    public static String getPackageName() {
        return getContext().getPackageName();

    }

    /**
     * @param dip-->px
     * @return
     */
    public static float dp2Px(float dip) {
        //        dp<-->px
        //1. px/dp = density
        //2. px / (ppi/160) = dp;

        float density = UIUtils.getResources().getDisplayMetrics().density;
        float px = dip * density + .5f;
        return px;
    }

    /**
     * px-->dip
     *
     * @param px
     * @return
     */
    public static float px2Dip(int px) {
        //1. px/dp = density
        float density = UIUtils.getResources().getDisplayMetrics().density;
        int dp = (int) (px / density + .5f);
        return dp;
    }
    /**
     * 获取屏幕宽
     *
     * @return 屏幕宽度像素值
     */
    public static float getWidth() {
        float widthPixelsth = UIUtils.getResources().getDisplayMetrics().widthPixels;
        return widthPixelsth;
    }
    /**
     * 获取dpi
     *
     * @return 屏幕宽度像素值
     */
    public static float getDpi() {
        float densityDpi = UIUtils.getResources().getDisplayMetrics().densityDpi;
        return densityDpi;
    }

    /**
     * 获得版本名称
     * @return
     */
    public static String getVersionName() {
        String version = "";
        // 获取packagemanager的实例
        PackageManager packageManager = getContext().getPackageManager();
        try {
            // getPackageName()是你当前类的包名，0代表是获取版本信息
            PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(), 0);
            version = packInfo.versionName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return version;
    }

    /**
     * 将px值转换为sp值，保证文字大小不变
     *
     * @param pxValue
     * @param pxValue
     *            （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    public static int px2sp(float pxValue) {
        final float fontScale = UIUtils.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / fontScale + 0.5f);
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     *
     * @param spValue
     * @param spValue
     *            （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    public static int sp2px(float spValue) {
        final float fontScale = UIUtils.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }

    /**
     * 获取当前应用离最大可用内存还有多少内存
     * @return long类型 单位为MB
     */
    public static long getAllocatedMemory(){
        long maxMemory = Runtime.getRuntime().maxMemory() / 1024 / 1024;
        long totalMemory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
        long freeMemory = Runtime.getRuntime().freeMemory() / 1024 / 1024;
        long allocatedMemory = maxMemory - (totalMemory - freeMemory);
        return allocatedMemory;
    }
}
